VERSION 5.00
Object = "{0ECD9B60-23AA-11D0-B351-00A0C9055D8E}#6.0#0"; "mshflxgd.ocx"
Object = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0"; "FM20.DLL"
Begin VB.UserControl UclServicio 
   BackStyle       =   0  'Transparent
   ClientHeight    =   3735
   ClientLeft      =   0
   ClientTop       =   0
   ClientWidth     =   8055
   ScaleHeight     =   3735
   ScaleWidth      =   8055
   Begin VB.TextBox txtNombre 
      Height          =   315
      Left            =   840
      TabIndex        =   1
      Top             =   0
      Width           =   5655
   End
   Begin VB.CommandButton CmdBuscar 
      Height          =   315
      Left            =   6600
      Picture         =   "UclServicio.ctx":0000
      Style           =   1  'Graphical
      TabIndex        =   2
      ToolTipText     =   "Buscar"
      Top             =   0
      Width           =   375
   End
   Begin VB.Frame FraBusqueda 
      BackColor       =   &H00FFFFC0&
      BorderStyle     =   0  'None
      Height          =   3375
      Left            =   0
      TabIndex        =   3
      Top             =   360
      Width           =   8055
      Begin VB.ComboBox CmbTipoServicio 
         Height          =   315
         Left            =   840
         Style           =   2  'Dropdown List
         TabIndex        =   5
         Top             =   120
         Width           =   5655
      End
      Begin MSHierarchicalFlexGridLib.MSHFlexGrid HFG 
         Height          =   2175
         Left            =   120
         TabIndex        =   6
         Top             =   600
         Width           =   7815
         _ExtentX        =   13785
         _ExtentY        =   3836
         _Version        =   393216
         Cols            =   3
         FixedCols       =   0
         ScrollBars      =   2
         SelectionMode   =   1
         _NumberOfBands  =   1
         _Band(0).Cols   =   3
      End
      Begin VB.Line LinAba 
         BorderColor     =   &H00FF6666&
         BorderWidth     =   5
         X1              =   0
         X2              =   8160
         Y1              =   3360
         Y2              =   3360
      End
      Begin VB.Line LinArr 
         BorderColor     =   &H00FF6666&
         BorderWidth     =   6
         X1              =   0
         X2              =   8160
         Y1              =   0
         Y2              =   0
      End
      Begin VB.Line LinDer 
         BorderColor     =   &H00FF6666&
         BorderWidth     =   5
         X1              =   8040
         X2              =   8040
         Y1              =   0
         Y2              =   3480
      End
      Begin VB.Line LinIzq 
         BorderColor     =   &H00FF6666&
         BorderWidth     =   6
         X1              =   0
         X2              =   0
         Y1              =   0
         Y2              =   3480
      End
      Begin MSForms.CommandButton CmdSeleccionar 
         Height          =   375
         Left            =   6480
         TabIndex        =   7
         Top             =   2880
         Width           =   1455
         Caption         =   " Seleccionar"
         PicturePosition =   327683
         Size            =   "2566;661"
         Picture         =   "UclServicio.ctx":058A
         Accelerator     =   83
         FontHeight      =   165
         FontCharSet     =   0
         FontPitchAndFamily=   2
         ParagraphAlign  =   3
      End
      Begin MSForms.CommandButton CmdCancelar 
         Height          =   375
         Left            =   4920
         TabIndex        =   8
         Top             =   2880
         Width           =   1455
         Caption         =   " Cancelar"
         PicturePosition =   327683
         Size            =   "2566;661"
         Picture         =   "UclServicio.ctx":06E4
         Accelerator     =   67
         FontHeight      =   165
         FontCharSet     =   0
         FontPitchAndFamily=   2
         ParagraphAlign  =   3
      End
      Begin VB.Label Label1 
         Alignment       =   1  'Right Justify
         BackStyle       =   0  'Transparent
         Caption         =   "Tipo:"
         Height          =   255
         Left            =   360
         TabIndex        =   4
         Top             =   120
         Width           =   375
      End
   End
   Begin VB.Label LabServicio 
      Alignment       =   1  'Right Justify
      Caption         =   "Servicio:"
      Height          =   255
      Left            =   120
      TabIndex        =   0
      Top             =   0
      Width           =   615
   End
End
Attribute VB_Name = "UclServicio"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

Private alto_small As Integer
Private alto_large As Integer

Private mMostrarTodos As Boolean
Private mSeleccionarUnico As Boolean
Private mSoloHabilitados As Boolean
Private mSoloConTipoDoc As Boolean
Private mCodTipoServicio As String
Private mCodServicio As String 'para poder seleccionar solo un servicio y escoger una de sus varias cuentas contables
Private mCodUsuario As String

Public WithEvents servicio As ClsServicio
Attribute servicio.VB_VarHelpID = -1

Private mEnabled As Boolean
Private mCantServicios As Integer

Private iniciando As Boolean

Public Event seleccionandoServicio()
Public Event deseleccionandoServicio()

Private cMouse As New ClsRueda

Private Sub UserControl_Initialize()
    alto_small = 330
    alto_large = 3735
    mCantServicios = 0
    cMouse.InitMouseWheel HFG.hwnd
End Sub
Private Sub UserControl_ExitFocus()
    Achica
End Sub
'Public Sub cargarServicios(Optional opcionTodos As Boolean = False, Optional usuarioCod As String, Optional seleccionarUnico As Boolean = False, Optional habilitados As String, Optional cuentaContable As Boolean = False, Optional tipoServicioCod As String, Optional soloServiciosTipoDoc As Boolean = False)
Public Sub cargarServicios(Optional opcionTodos As Boolean = False, _
                           Optional seleccionarUnico As Boolean = False, _
                           Optional mostrarCampoCuenta As Boolean = False, _
                           Optional soloHabilitados As Boolean = False, _
                           Optional soloConTipoDoc As Boolean = False, _
                           Optional tipoServicioCod As String = "", _
                           Optional usuarioCod As String = "", _
                           Optional servicioCod As String = "" _
                           )
    iniciando = True
    
    Set servicio = New ClsServicio
    'carga las variables de construccion
    mMostrarTodos = opcionTodos
    mSeleccionarUnico = seleccionarUnico
    mSoloHabilitados = soloHabilitados
    mSoloConTipoDoc = soloConTipoDoc
    mCodTipoServicio = tipoServicioCod
    mCodServicio = servicioCod
    mCodUsuario = usuarioCod
    'llenando combo y grilla de servicios
    Dim tipos As ClsTipoServicio
    Set tipos = New ClsTipoServicio
    
    If mCodTipoServicio <> "" Then
        'solo carga para un tipo de servicio, asi que lo pone en el combo y lo deshabilita
        tipos.consultaDatos mCodTipoServicio
        llenaComboRecordset CmbTipoServicio, tipos.orset, tse_id, tse_nombre, tipos.codigo, False, False
    Else
        'llenando combo de tipos de servicio
        If mSoloConTipoDoc Then
            tipos.consultaConTipoDocumento
        Else
            tipos.consulta
        End If
'        If tipos.orset.numRegistros < 2 Then
'            mMostrarTodos = False
'        End If
        'llenaComboRecordset cmbTipoServicio, tipos.orset, tse_id, tse_nombre, , mMostrarTodos, False
        llenaComboRecordset CmbTipoServicio, tipos.orset, tse_id, tse_nombre, , True, False
        If CmbTipoServicio.ListIndex = -1 Then
            'consulta "", ""
        End If
    End If
    Set tipos = Nothing
    'si hay un solo servicio, no tiene que habilitar la busqueda de servicios
    iniciando = False
End Sub

'/////////////////////////////////////////////////
'//         Metodos de busqueda                 //
'/////////////////////////////////////////////////

Private Sub servicio_DataChanged()
    'buscar el servicio
    'TxtCuenta.Text = cuenta.numero
    TxtNombre.Text = servicio.nombre
    If servicio.nombre = "" Then
        If mMostrarTodos Then
            TxtNombre.Text = "(TODOS)"
        End If
    End If
    RaiseEvent seleccionandoServicio
End Sub

'PROCEDIMIENTO DE LLENADO DE GRILLA Y COMBO
Private Sub consulta(dTipoServicioCod As String, dNombre As String, Optional ocultarGrillaAlEncontrarUno As Boolean = True)
    Dim i, X As Integer
    Dim q As ClsQuery
    Dim s As ClsSQL
    Set q = New ClsQuery
    Set s = New ClsSQL
    
    s.setCampos Array(ser_id, ser_nombre, ser_tse_id)
    s.setTablas Array(ser, tse)
    s.setCondiciones Array(ser_tse_id & "=" & tse_id)
    
    If Conversion.Val(dTipoServicioCod) > 0 Then
        s.agregarCondicion tse_id & "=" & dTipoServicioCod
    End If
    If mCodServicio <> "" Then
        s.agregarCondicion ser_id & "=" & mCodServicio
    End If
    If mSoloHabilitados Then
        s.agregarCondicion ser_habil & "=" & formatBoolBD("1")
    End If
    If dNombre <> "" And dNombre <> "(TODOS)" Then
        s.agregarCondicion ser_nombre & " like '" & dNombre & "%'"
    End If
    
    If mSoloConTipoDoc Then
        s.agregarTabla tdo
        s.agregarCondicion tdo_tse_id & "=" & tse_id
    End If
    
    If GUsuario.tipo_id <> "1" Then
        s.agregarCondicion per_tse_id & "=" & tse_id
        s.agregarCondicion per_tus_id & "=" & GUsuario.tipo_id
        s.agregarTabla per
    End If
    s.sSelect
    
    'si fuera con todos agrega un SELECT con la opcion (TODOS) como primer registro
    If mMostrarTodos Then
        Dim sq2 As ClsSQL
        Set sq2 = New ClsSQL
        sq2.setCampos Array("'' as " & ser_id, "'(TODOS)' as " & ser_nombre, "0 as " & ser_tse_id)
        sq2.setTablas Array(nod)
        sq2.setCondiciones Array(nod_id & "=1")
        sq2.sSelect
        s.setUnion sq2.cadena
    End If
    
    q.consulta s.cadena & " ORDER BY " & ser_tse_id & "," & ser_nombre & " ASC"
    llenaGrillaRecordset HFG, q.orset, Array(0 * 15, 495 * 15, 0), Array("", "Nombre")
    
    mCantServicios = q.orset.numRegistros
    
    If Not iniciando Then
        If mMostrarTodos Then
            mCantServicios = mCantServicios - 1
        End If
        If mCantServicios > 1 Then
            Agranda
            HFG.SetFocus
        ElseIf mCantServicios = 1 Then
            'lo selecciona
            q.orset.MoveLast
            servicio.consultaDatos q.getDato(ser_id)
            If ocultarGrillaAlEncontrarUno Then
                Salir_Control
            Else
                Agranda
                HFG.SetFocus
            End If
        Else
            Agranda
            TxtNombre.SetFocus
        End If
    Else
        If mMostrarTodos Then
            TxtNombre.Text = "(TODOS)"
            mCantServicios = mCantServicios - 1
        End If
        If mCantServicios = 1 Then
            'lo selecciona
            q.orset.MoveLast
            servicio.consultaDatos q.getDato(ser_id)
        End If
    End If
    
    mCantServicios = q.orset.numRegistros
    
End Sub
Public Sub deseleccionarServicio()
    servicio.codigo = ""
    servicio.nombre = ""
    TxtNombre.Text = ""
    If mMostrarTodos Then
        TxtNombre.Text = "(TODOS)"
    End If
End Sub

Public Sub setTamano(Optional ancho As Integer = 0, Optional alto As Integer = 0)
    If ancho > 0 Then
        FraBusqueda.Width = ancho
        LinDer.x1 = ancho - 15
        LinDer.x2 = ancho - 15
        CmdSeleccionar.Left = 6480 - (8055 - ancho)
        CmdCancelar.Left = 4920 - (8055 - ancho)
        HFG.Width = 7815 - (8055 - ancho)
        CmdBuscar.Left = 6600 - (8055 - ancho)
        TxtNombre.Width = 5655 - (8055 - ancho)
        CmbTipoServicio.Width = 5655 - (8055 - ancho)
    End If
    If alto > 0 Then
        alto_large = alto
        FraBusqueda.Height = 3375 - (3735 - alto)
        LinAba.Y1 = 3360 - (3735 - alto)
        LinAba.Y2 = 3360 - (3735 - alto)
        HFG.Height = 2175 - (3735 - alto)
        CmdSeleccionar.Top = 2880 - (3735 - alto)
        CmdCancelar.Top = 2880 - (3735 - alto)
        
    End If
End Sub

'/////////////////////////////////////////////////
'//         Eventos de comportamiento           //
'/////////////////////////////////////////////////

Private Sub CmbTipoServicio_GotFocus()
    salirSiPequeno
End Sub

Private Sub CmdCancelar_GotFocus()
    'salirSiPequeno
End Sub

Private Sub CmdSeleccionar_GotFocus()
    'salirSiPequeno
End Sub

Private Sub HFG_GotFocus()
    'salirSiPequeno
End Sub

Private Sub txtnombre_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        consulta valorCombo(CmbTipoServicio), TxtNombre.Text
    End If
End Sub

Private Sub HFG_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        Call CmdSeleccionar_Click
    End If
End Sub

Private Sub CmbTipoServicio_Click()
    consulta valorCombo(CmbTipoServicio), TxtNombre.Text
    'si hay un solo servicio, no tiene que habilitar la busqueda de servicios
'    If HFG.Rows <= 2 Then
'        If HFG.TextMatrix(1, 0) <> "" Then
'            CmdBuscar.Visible = False
'        End If
'    Else
'        CmdBuscar.Visible = True
'    End If
End Sub

Private Sub CmdSeleccionar_Click()
    servicio.consultaDatos HFG.TextMatrix(HFG.Row, 0)
    Salir_Control
End Sub
Private Sub HFG_DblClick()
    Call CmdSeleccionar_Click
End Sub
Private Sub CmdCancelar_Click()
    Achica
End Sub
Private Sub CmdBuscar_Click()
    If Height = alto_large Then
        Achica
    Else
        'si estuviera con el tipo de cuenta contable, busca el servicio de la grilla
        consulta valorCombo(CmbTipoServicio), TxtNombre.Text, False
    End If
End Sub

'/////////////////////////////////////////////////
'//         Metodos genericos                   //
'/////////////////////////////////////////////////
Private Sub salirSiPequeno()
    If Height <> alto_large Then
        Salir_Control
    End If
End Sub
Private Sub Achica()
    Height = alto_small
End Sub
Private Sub Agranda()
    Height = alto_large
End Sub

Public Sub Salir_Control()
    CmdCancelar.SetFocus
    SendKeys "{tab}", False
    Call UserControl_ExitFocus
End Sub
Public Sub enabled(opcion As Boolean)
    CmdBuscar.Visible = opcion
    TxtNombre.enabled = opcion
    Achica
End Sub
Public Sub LabelVisible(opcion As Boolean)
    LabServicio.Visible = opcion
End Sub

'/////////////////////////////////////////////////
'//         Metodos SET - GET                   //
'/////////////////////////////////////////////////
Public Function getCodTipoServicio()
    getCodTipoServicio = mCodTipoServicio
End Function
